package jnpf.base.service;

import jnpf.base.model.dbtable.DbTableCreate;
import jnpf.base.model.dbtable.DbTableUpdate;
import jnpf.exception.DataException;
import jnpf.database.model.DbTableDataForm;
import jnpf.database.model.DbTableFieldModel;
import jnpf.database.model.DbTableModel;

import java.util.List;
import java.util.Map;

/**
 * 数据管理
 *
 * @author JNPF开发平台组
 * @version V3.1.0
 * @copyright 引迈信息技术有限公司
 * @date 2019年9月27日 上午9:18
 */
public interface DbTableService {

    /**
     * 表列表
     *
     * @param dbId 连接Id
     * @return 表集合信息
     * @throws DataException ignore
     */
    List<DbTableModel> getList(String dbId) throws DataException;

    /**
     * 表字段
     *
     * @param dbId  连接Id
     * @param table 表名
     * @return 字段集合信息
     * @throws DataException ignore
     */
    List<DbTableFieldModel> getFieldList(String dbId, String table) throws DataException;

    /**
     * 表数据
     *
     * @param dbTableDataForm 分页
     * @param dbId            连接Id
     * @param table           表名
     * @return 表数据集合
     * @throws Exception ignore
     */
    List<Map<String, Object>> getData(DbTableDataForm dbTableDataForm, String dbId, String table) throws Exception;

    /**
     * 验证名称
     *
     * @param dbId     连接Id
     * @param table    表名
     * @param oldTable 主键值
     * @return 重名标识
     * @throws DataException ignore
     */
    boolean isExistByFullName(String dbId, String table, String oldTable) throws DataException;

    /**
     * 删除表
     *
     * @param dbId  连接Id
     * @param table 表名
     * @throws DataException ignore
     */
    void delete(String dbId, String table) throws DataException;

    /**
     * 创建表
     *
     * @param dbTableCreate 前端创表表单信息
     * @return 执行状态（1：成功；0：重名）
     * @throws DataException ignore
     */
    int createTable(DbTableCreate dbTableCreate) throws DataException;

    /**
     * 修改表
     *
     * @param dbTableUpdate 修改表参数对象
     * @throws DataException ignore
     */
    void update(DbTableUpdate dbTableUpdate) throws DataException;

    /**
     * 获取表数据行数
     *
     * @param dbId  数据连接Id
     * @param table 表名
     * @return 数据行数
     * @throws DataException ignore
     */
    int getSum(String dbId, String table) throws DataException;

    /**
     * 获取同步表
     *
     * @param lindId 连接id
     */
    void getSyncTable(String lindId);
}
